#include <iostream>
#include <map> //map的头文件
using namespace std;
/*
    1. map容器
         作用：存放键值对--》键值对描述对应关系
               例子1：存放账号和密码
                       键     值
                      张三   123456
                      李四   147258
               例子2：存放学生和班级编号
                       键     值
                      马云   GZ2522班级
                      马化腾 GZ2523班级
               例子3：星期几对应数字
               键和值由程序员决定，map从左到右分别是键和值
    2.map的模板参数需要传递2个(原因：map存放键值对，键需要一种类型，值也需要一种类型)
      键和值可以是任意合法类型，不一定要相同
      以前学习的容器模板参数只需要传递1个
*/

int main()
{
    int i;
    // 定义map对象
    map<string, string> map1; // 从左到右分别对应键的类型，值的类型
    // map<string,int> map2;

    // 存放键值对--》键值对描述对应关系
    // 写法1：使用insert函数--》一次存放一对/一副数据
    map1.insert(pair<string, string>("马云", "GZ2522班级"));
    map1.insert(pair<string, string>("马化腾", "GZ2523班级"));

    // 写法2：map重载了[](不是用来获取下标i对应的元素)，可以用来插入键值对
    map1["张朝阳"] = "GZ2523班级";
    map1["周鸿祎"] = "GZ2524班级";

    // 迭代器遍历map1
    //  auto it=map1.begin();
    //  for(; it!=map1.end(); it++)
    //  {
    //  cout<<"键: "<<it->first<<endl;
    //  cout<<"值: "<<it->second<<endl;
    // }

    // 基于范围for
    // for(auto x:map1)
    //{
    // cout<<"键: "<<x.first<<endl;
    // cout<<"值: "<<x.second<<endl;
    //}

    return 0;
}